package com.yixia.system.mapper.system;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yixia.common.utils.StringUtils;
import com.yixia.system.domain.system.SysNotice;

import javax.xml.namespace.QName;
import java.util.Arrays;
import java.util.List;

/**
 * @author 35038
 * @description 针对表【sys_notice(通知公告表)】的数据库操作Mapper
 * @createDate 2023-08-26 20:40:18
 * @Entity com.yixia.entity.credit.SysNotice
 */
public interface SysNoticeMapper extends BaseMapper<SysNotice> {

    /**
     * 查询公告列表
     *
     * @param notice 公告信息
     * @return 公告集合
     */
    default List<SysNotice> selectNoticeList(SysNotice notice) {
        LambdaQueryWrapper<SysNotice> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.like(StringUtils.isNotEmpty(notice.getNoticeTitle()), SysNotice::getNoticeTitle, notice.getNoticeTitle())
                .eq(StringUtils.isNotEmpty(notice.getNoticeType()), SysNotice::getNoticeType, notice.getNoticeType())
                .like(StringUtils.isNotEmpty(notice.getCreateBy()), SysNotice::getCreateBy, notice.getCreateBy());


        // 进行分页查询
        return this.selectList(queryWrapper);
    }

    /**
     * 查询公告信息
     *
     * @param noticeId 公告ID
     * @return 公告信息
     */
    default SysNotice selectNoticeById(Long noticeId) {
        return this.selectById(noticeId);
    }

    /**
     * 新增公告
     *
     * @param notice 公告信息
     * @return 结果
     */
    public default int insertNotice(SysNotice notice) {
        if(!StringUtils.isNotNull(notice)){
            return 0;
        }
        return this.insert(notice);
    }

    /**
     * 修改公告
     *
     * @param notice 公告信息
     * @return 结果
     */
    public default int updateNotice(SysNotice notice) {
        if (!StringUtils.isNotEmpty(notice)) {
            return 0;
        }

        LambdaUpdateWrapper<SysNotice> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.eq(StringUtils.isNotEmpty(notice.getNoticeTitle()), SysNotice::getNoticeTitle, notice.getNoticeTitle())
                .eq(StringUtils.isNotEmpty(notice.getNoticeType()), SysNotice::getNoticeType, notice.getNoticeType())
                .eq(StringUtils.isNotEmpty(notice.getNoticeContent()), SysNotice::getNoticeContent, notice.getNoticeContent())
                .eq(StringUtils.isNotEmpty(notice.getStatus()), SysNotice::getStatus, notice.getStatus());
        updateWrapper.eq(StringUtils.isNotEmpty(notice.getNoticeId()), SysNotice::getNoticeId, notice.getNoticeId());
        return this.updateById(notice);
    }

    /**
     * 批量删除公告
     *
     * @param noticeId 公告ID
     * @return 结果
     */
    public default int deleteNoticeById(Long noticeId) {
        return this.deleteById(noticeId);
    }

    /**
     * 批量删除公告信息
     *
     * @param noticeIds 需要删除的公告ID
     * @return 结果
     */
    public default int deleteNoticeByIds(Long[] noticeIds) {
        List<Long> noticeIdList = Arrays.asList(noticeIds);
        return this.deleteBatchIds(noticeIdList);
    }
}




